package com.qianyu.core.entity.bean;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qianyu.core.entity.base.BaseBean;
import com.qianyu.core.util.MD5Util;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;

/**
 * QQ账号
 *
 * @TableName tb_qq_account
 */
@Data
@ApiModel(value = "qq账号表")
@TableName(value = "tb_qq_account")
public class QqAccount extends BaseBean {
    /**
     * QQ
     */
    @NotBlank(message = "[QQ]不能为空")
    @Size(max = 12, message = "编码长度不能超过12")
    @ApiModelProperty("QQ")
    @Excel(name = "qq",orderNum = "0",width = 15)
    private String qq;
    /**
     * 手机号
     */
    @NotBlank(message = "[手机号]不能为空")
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("手机号")
    @Excel(name = "手机号",orderNum = "1",width = 15)
    private String phone;

    /**
     * qq登录值
     */
    @ApiModelProperty(value = "qq登录值")
    @TableField(exist = false)
    @Excel(name = "登录值",orderNum = "2",width = 15)
    private String loginVal;

    /**
     * 缓存
     */
    @Size(max = -1, message = "编码长度不能超过-1")
    @ApiModelProperty("缓存")
    private String cache;
    /**
     * 账号状态:-1=冻结,0=待初始化,1=正常,2=异常
     */
    @NotNull(message = "[账号状态:-1=冻结,0=待初始化,1=正常,2=异常]不能为空")
    @ApiModelProperty("账号状态:-1=冻结,0=待初始化,1=正常,2=异常")
    private Integer status;
    /**
     * 结算状态:0=未出账,1=待结算,2=已结算
     */
    @NotNull(message = "[结算状态:0=未出账,1=待结算,2=已结算]不能为空")
    @ApiModelProperty("结算状态:0=未出账,1=待结算,2=已结算")
    private Integer settleStatus;
    /**
     * 租用状态:0=待出租,1=出租中,2=已过期
     */
    @NotNull(message = "[租用状态:0=待出租,1=出租中,2=已过期]不能为空")
    @ApiModelProperty("租用状态:0=待出租,1=出租中,2=已过期")
    private Integer rentStatus;

    /**
     * 回收状态0-正常 1-回收
     */
    @NotNull(message = "[回收状态0-正常 1-回收]不能为空")
    @ApiModelProperty("回收状态0-正常 1-回收")
    private Integer recoveryStatus;
    /**
     * 到期时间
     */
    @NotNull(message = "[到期时间]不能为空")
    @ApiModelProperty("到期时间")
    private Integer rentExpire;
    /**
     * 租用时间
     */
    @NotNull(message = "[租用时间]不能为空")
    @ApiModelProperty("租用时间")
    private Integer rentTime;
    /**
     * 租用代理商
     */
    @NotNull(message = "[租用代理商]不能为空")
    @ApiModelProperty("租用代理商")
    private Integer agencyId;
    /**
     * 代理人名称
     */
    @TableField(exist = false)
    @ApiModelProperty("代理人名称")
    private String agencyName;

    /**
     * 用户id
     */
    @NotNull(message="[用户id]不能为空")
    @ApiModelProperty("用户id")
    private Integer userId;

    /**
     * 用户名称
     */
    @TableField(exist = false)
    @ApiModelProperty("用户名称")
    private String nickname;
    /**
     * 是否认证:0=未认证,1=已认证
     */
    @NotNull(message = "[是否认证:0=未认证,1=已认证]不能为空")
    @ApiModelProperty("是否认证:0=未认证,1=已认证")
    private Integer authed;
    /**
     * 登录秘钥
     */
    @NotBlank(message = "[登录秘钥]不能为空")
    @Size(max = 32, message = "编码长度不能超过32")
    @ApiModelProperty("登录秘钥")
    @Excel(name = "登录秘钥",orderNum = "3",width = 15)
    private String loginSecret;
    /**
     * 信用分
     */
    @NotNull(message = "[信用分]不能为空")
    @ApiModelProperty("信用分")
    private Integer creditScore;
    /**
     * 信用分刷新时间
     */
    @NotNull(message = "[信用分刷新时间]不能为空")
    @ApiModelProperty("信用分刷新时间")
    private Integer creditScoreTime;
    /**
     * 备注
     */
    @NotBlank(message = "[备注]不能为空")
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("备注")
    private String remark;
    /**
     * QB数量
     */
    @NotNull(message = "[QB数量]不能为空")
    @ApiModelProperty("QB数量")
    private BigDecimal qnum;
    /**
     * 原QB数量
     */
    @NotNull(message = "[原QB数量]不能为空")
    @ApiModelProperty("原QB数量")
    private BigDecimal originQnum;
    /**
     * 最新查qb时间
     */
    @NotNull(message = "[最新查qb时间]不能为空")
    @ApiModelProperty("最新查qb时间")
    private Integer qbTime;
    /**
     * 省份
     */
    @Size(max = 30, message = "编码长度不能超过30")
    @ApiModelProperty("省份")
    private String province;
    /**
     * 城市
     */
    @Size(max = 30, message = "编码长度不能超过30")
    @ApiModelProperty("城市")
    private String city;
    /**
     * 袁代理
     */
    @NotBlank(message = "[袁代理]不能为空")
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("袁代理")
    private String proxy1;
    /**
     * 阳代理
     */
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("阳代理")
    private String proxy2;
    /**
     * 阳程代理失效时间
     */
    @NotNull(message = "[阳程代理失效时间]不能为空")
    @ApiModelProperty("阳程代理失效时间")
    private Integer proxy2Expire;
    /**
     * 状态变更时间
     */
    @NotNull(message = "[状态变更时间]不能为空")
    @ApiModelProperty("状态变更时间")
    private Integer statusChangeTime;
    /**
     * 代理商分配时间
     */
    @NotNull(message = "[代理商分配时间]不能为空")
    @ApiModelProperty("代理商分配时间")
    private Integer dispatchTime;

    public String getLoginVal() {
        return MD5Util.md5(qq);
    }
}
